package site.util;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.Context;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 
 * 〈一句话功能简述〉<br>
 * Mbatis 生成数据库主方法
 *
 * @author kui.zhang
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public class GeneratorMain {
    private String tableName = "tb_test_demo";
    private String domainObjectName = "testDemo";
    private List<ColumnOverrideModel> columnOverrideModels = null; // 需要重写的列
    private static final boolean _overwrite = true; // 允许覆盖
    private static final boolean _verbose = true;// 允许移动
    private static final String _jdbcUrl = "jdbc:mysql://120.26.198.195:3306/paramter_db";
    private static final String _jdbcDriver = "com.mysql.jdbc.Driver";
    private static final String _jdbcUserName = "root";
    private static final String _jdbcPassword = "Xqm2328549";

    /**
     * 
     * @param tableName 表名
     * @param domainObjectName 实体
     */
    public GeneratorMain(String tableName, String domainObjectName, List<ColumnOverrideModel> columnOverrideModels) {
        this.tableName = tableName;
        this.domainObjectName = domainObjectName;
        this.columnOverrideModels = columnOverrideModels;
    }

    public String mysqlUrl() throws IOException {
        String path = new File(this.getClass().getResource("").getFile(), "../../../../tool/MBG").getCanonicalPath();
        System.out.println(path);
        return path + "/mysql-connector-java-5.1.12.jar";
    }

    /**
     * 
     * 功能描述: <br>
     * execute
     *
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public void execute() {
        GeneratorUtil gu = new GeneratorUtil(_jdbcUrl, _jdbcDriver, _jdbcUserName, _jdbcPassword);
        Context context = gu.context(tableName, domainObjectName, columnOverrideModels);
        Set<String> contexts = new HashSet<String>();
        contexts.add(context.getId());
        try {
            Configuration config = new Configuration();
            config.addContext(context);
            config.addClasspathEntry(mysqlUrl());
            DefaultShellCallback callback = new DefaultShellCallback(_overwrite);
            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, null);
            myBatisGenerator.generate(new CustomProgressCallback(_verbose), contexts);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * 
     * 功能描述: <br>
     * 生成sql 入口
     *
     * @param args
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    public static void main(String[] args) {
        placementPloy();
    }


   /* public static void placement() {
        GeneratorUtil.setTargetPackage("com.hunteron.candidate");
        GeneratorUtil.setMybatisPackage("mybatis.sqlmap.candidate");
        GeneratorUtil.setGeneratedKey(false);
        GeneratorUtil.setUseActualColumnNames(true); // 是否支持驼峰（true支持驼峰，请sql 字段 严格按照create_time 此格式）
        GeneratorMain generatorMain = new GeneratorMain("tb_candidate_ploy", "CandidatePloy", null);
        generatorMain.execute();
    }*/
 /*   public static void positionPloy() {
        GeneratorUtil.setTargetPackage("com.hunteron.position");
        GeneratorUtil.setMybatisPackage("mybatis.sqlmap.position");
        GeneratorUtil.setUseActualColumnNames(true); // 是否支持驼峰（true支持驼峰，请sql 字段 严格按照create_time 此格式）
        GeneratorMain generatorMain = new GeneratorMain("tb_position_ploy", "PositionPloy", null);
        generatorMain.execute();
    }*/


    public static void placementPloy() {
        GeneratorUtil.setTargetPackage("site.dao.parameter");
        GeneratorUtil.setMybatisPackage("mybatis.sqlmap.parameter");
        GeneratorUtil.setGeneratedKey(true);
        GeneratorUtil.setUseActualColumnNames(true); // 是否支持驼峰（true支持驼峰，请sql 字段 严格按照create_time 此格式）
        GeneratorMain generatorMain = new GeneratorMain("tb_param_mysql", "ParamMysql", null);
        generatorMain.execute();
    }
}
